@echo off
chcp 65001 >nul
cd /d "%~dp0"

echo ========================================
echo       改进版浮动覆盖层启动器
echo ========================================
echo.

:: 检查环境
echo [1/4] 环境检查...
if not exist "main.js" (
    echo [❌ ERROR] main.js 不存在，请确保在 floating_overlay 目录下运行
    pause
    exit /b 1
)

if not exist "node_modules\electron" (
    echo [❌ ERROR] Electron 未安装，请运行 install_overlay.bat
    pause
    exit /b 1
)

echo [✅ OK] 环境检查通过

:: 清理现有进程
echo.
echo [2/4] 清理现有进程...
taskkill /f /im electron.exe >nul 2>&1
timeout /t 1 >nul
echo [✅ OK] 进程清理完成

:: 启动 Electron
echo.
echo [3/4] 启动浮动覆盖层...
echo [INFO] 启动参数: --no-sandbox --disable-web-security
echo [INFO] 如果窗口不可见，请检查任务栏或使用 Alt+Tab

:: 删除旧的日志文件
if exist "overlay_startup.log" del "overlay_startup.log" >nul 2>&1

:: 使用改进的启动方式
start /b cmd /c "npx electron . --no-sandbox --disable-web-security --show > overlay_startup.log 2>&1"

:: 等待启动
echo [INFO] 等待启动...
timeout /t 3 >nul

:: 检查进程
echo.
echo [4/4] 检查启动状态...
set "ELECTRON_RUNNING=0"
for /f "tokens=2" %%i in ('tasklist /fi "imagename eq electron.exe" /fo csv ^| find /c "electron.exe"') do (
    if %%i GTR 0 set "ELECTRON_RUNNING=1"
)

if "%ELECTRON_RUNNING%"=="1" (
    echo [✅ SUCCESS] Electron 进程正在运行
    
    :: 检查日志文件是否有错误
    if exist "overlay_startup.log" (
        findstr /C:"Error\|ERROR\|error\|Failed\|FAILED\|failed" overlay_startup.log >nul 2>&1
        if %errorLevel% equ 0 (
            echo [⚠️ WARNING] 启动日志中发现错误信息：
            echo ----------------------------------------
            type overlay_startup.log
            echo ----------------------------------------
        ) else (
            echo [✅ OK] 没有发现启动错误
        )
    )
    
    echo.
    echo ========================================
    echo         启动成功！
    echo ========================================
    echo.
    echo 如果您看不到悬浮窗，请尝试：
    echo 1. 检查任务栏是否有 Electron 图标
    echo 2. 使用 Alt+Tab 切换窗口
    echo 3. 检查是否被其他窗口遮挡
    echo 4. 窗口可能在屏幕边缘或其他显示器上
    echo.
    echo 按任意键继续监控状态...
    pause >nul
    
    :: 进入监控模式
    :monitor_loop
    cls
    echo ========================================
    echo        浮动覆盖层状态监控
    echo ========================================
    echo.
    echo 时间: %date% %time%
    echo.
    
    :: 检查 Electron 进程
    tasklist /fi "imagename eq electron.exe" | find "electron.exe" >nul 2>&1
    if %errorLevel% equ 0 (
        echo [✅ RUNNING] Electron 进程正在运行
        for /f "tokens=2,5" %%a in ('tasklist /fi "imagename eq electron.exe" /fo table ^| findstr electron.exe') do (
            echo    进程ID: %%a  内存使用: %%b
        )
    ) else (
        echo [❌ STOPPED] Electron 进程已停止
        echo.
        echo 是否要重新启动? (y/n)
        set /p restart="输入选择: "
        if /i "%restart%"=="y" goto restart_overlay
        goto end_monitor
    )
    
    echo.
    echo [INFO] 按 Ctrl+C 停止监控
    echo [INFO] 10秒后自动刷新状态...
    timeout /t 10 >nul
    goto monitor_loop
    
    :restart_overlay
    echo.
    echo [INFO] 重新启动浮动覆盖层...
    start /b cmd /c "npx electron . --no-sandbox --disable-web-security --show > overlay_restart.log 2>&1"
    timeout /t 3 >nul
    goto monitor_loop
    
) else (
    echo [❌ FAILED] Electron 进程启动失败
    echo.
    echo 启动日志：
    if exist "overlay_startup.log" (
        echo ----------------------------------------
        type overlay_startup.log
        echo ----------------------------------------
    ) else (
        echo [ERROR] 没有找到启动日志文件
    )
    echo.
    echo 可能的解决方案：
    echo 1. 运行 diagnose_overlay.bat 进行详细诊断
    echo 2. 检查 Node.js 和 Electron 是否正确安装
    echo 3. 以管理员身份运行
    echo 4. 重启计算机后重试
    echo.
    pause
)

:end_monitor
echo.
echo [INFO] 监控结束
pause
